#define _CRT_SECURE_NO_WARNINGS 1


#include <stdio.h>


//struct Stu
//{
//    char name[20];//
//    char tele[12];//
//    char sex[5];//
//    int high;//
//}p1, p2;
//创建了两个相同类型的结构体变量，分别名叫p1和p2，每个结构体变量里有四个成员
//这两个结构体变量都是全局变量
//如果不写p1, p2这一段也可以之声明一种由四个成员变量的结构体的数据类型，如下所示


//struct stu
//{
//    char name[20];//
//    char tele[12];//
//    char sex[5];//
//    int high;//
//};
//此时只是声明了一种数据类型，并没有占用实际的内存空间
//struct St
//{
//    struct stu p;//
//    int num;//
//    float f;//
//};
//int main()
//{
//    struct stu p1 = { 0 };
//    //这个main函数只跟上面的第二、三段程序联系
//    //此时才声明了一个结构体变量p1，创建变量时才会占用内存空间
//    return 0;//
//}

//struct Stu
//{
//    char name[20];//
//    char tele[12];//
//    char sex[5];//
//    int high;//
//};//此时只是声明了一种数据类型，并没有占用实际的内存空间
//struct St
//{
//    struct Stu p;//
//    int num;//
//    float f;//
//};
//void my_print(struct Stu* s1)
//{
//    printf("%s %s %s %d\n", s1->name, s1->tele, s1->sex, s1->high);//
//    //当要打印结构体成员时，也可以通过结构体指针配合箭头 ->操作符的方法访问结构体成员
//}
//int main()
//{
//    struct Stu s1 = { "zhangsan", "13389896666", "nan", 181 };//
//    struct St ss1 = { {"lisi", "13566778888", "nv", 150}, 100, 2.0f };//
//    //浮点数在内存中不能精确保存，
//    printf("%s %s %s %d\n", s1.name, s1.tele, s1.sex, s1.high);//
//    //结构体 . 成员名称得到的是成员的值
//    printf("%s %s %s %d %d %f\n", ss1.p.name, ss1.p.tele, ss1.p.sex, ss1.p.high,
//        ss1.num, ss1.f);//
//    my_print(&s1);//
//    return 0;//
//}


//练习1：求下列程序的结果
//int main()
//{
//	int a, b, c;//
//	a = 5;//
//	c = ++a;
//	//先给a++，然后赋给c，此句之后的结果是c = 6, a = 6
//	b = ++c, c++, ++a, a++;
//	//逗号表达式的整个表达式的值只取决于
//	//第一个逗号前表达式执行完以后的值马上将这个表达式的结果赋给b
//	//所以此时b得到的值是7，此句之后的结果是b = 7, c = 8, a = 8
//	b += a++ + c;
//	//+=执行的优先级比较低，a++的后置++表明先使用之前a的值，再++
//
//	printf("%d %d %d\n", a, b, c);//
//	return 0;//
//}
//结果是a = 9, b = 23, c = 8


//练习2：写一个函数，返回参数二进制中 1 的个数
//int count_bi_1(unsigned int num)
//
//{
//    int count = 0;//
//    while (num)
//    {
//        if (num % 2 == 1)
//        {
//            count++;//
//        }
//        num /= 2;//
//    }
//    return count;//
//}
//必须把形参设计为无符号整型，以满足十进制除法的要求
//这个函数实现的原理是：一个数n无论是写成十进制数，还是二进制数，
//进行除法运算都理解成对应的补码，而这个函数的形参是无符号整型，
//都是把这个无符号整型(无视符号位)看成一个十进制的非负整数
//只要除法是按照十进制的除法进行，不断对 i 取余和除法，其中有几个k出现，则
//i进制的数n中就有几个k
//int main()
//{
//    int num = 0;//
//    scanf("%d", &num);//
//    int r = count_bi_1(num);//
//    printf("%d\n", r);//
//    return 0;//
//}


//也可以用以下的程序
//int count_bi_1(int num)
//{
//    int i = 0;//
//    int count = 0;//
//    for (i = 0; i < 32; i++)
//    {
//        if (((num >> i) & 1) == 1)
//        {
//            count++;//
//        }
//    }
//    return count;//
//}
//int main()
//{
//    int num = 0;//
//    scanf("%d", &num);//
//    int r = count_bi_1(num);//
//    printf("%d\n", r);//
//    return 0;//
//}

//也可用以下的程序
//int count_bi_1(int n)
//{
//    int count = 0;//
//    while (n)
//    {
//        n = n & (n - 1);//
//        count++;//
//    }
//    return count;//
//}
//int main()
//{
//    int num = 0;//
//    scanf("%d", &num);//
//    int r = count_bi_1(num);//
//    printf("%d\n", r);//
//    return 0;//
//}


//练习3：求两个二进制数中不同位的个数
//int count_diff(int m, int n)
//{
//    int i = 0;//
//    int count = 0;//
//    for (i = 0; i < 32; i++)
//    {
//        if (((n >> i) & 1) != ((m >> i) & 1))
//        {
//            count++;//
//        }
//    }
//        return count;//
//}
//int main()
//{
//    int m = 0;//
//    int n = 0;//
//    scanf("%d %d", &m, &n);//
//    int r = count_diff(m, n);//
//    printf("%d\n", r);//
//    return 0;//
//}

//也可以用下面的程序
//    int count_diff(int m, int n)
//{
//    int count = 0;//
//    int ret = m ^ n;//
//    while (ret)
//    {
//        ret = ret & (ret - 1);//
//        count++;//
//    }
//    return count;//
//}
//int main()
//{
//    int m = 0;//
//    int n = 0;//
//    scanf("%d %d", &m, &n);//
//    int r = count_diff(m, n);//
//    printf("%d\n", r);//
//    return 0;//
//}


//练习4：打印整数二进制的奇数位和偶数位
//int main()
//{
//    int i = 0;//
//    int num = 0;
//    scanf("%d", &num);
//    for (i = 30; i >= 0; i -= 2)
//    {
//        printf("%d ", (num >> i) & 1);//打印奇数位的数字
//    }
//    printf("\n");//
//    for (i = 31; i >= 1; i -= 2)
//    {
//        printf("%d ", (num >> i) & 1);//打印偶数位的数字
//    }
//    return 0;//
//}

//练习5：求下列程序的打印结果
//int i;
//全局变量如果不进行初始化，则初始化为0
//int main()
//{
//    i--;//执行完毕后i变成-1
//    if (i > sizeof(i))
//    {
//        printf(">\n");//
//    }
//    else
//    {
//        printf("<\n");//
//    }
//    return 0;//
//}
//sizeof (i)返回的值是无符号整型，i > sizeof (i)，而在类型大于整型大小的时候进行算术转换
//所以此时的i作为有符号整型，会将i对应的补码算术转换成无符号整型，
//i就被视作一个非常大的正整数进行比较，所以大于4，程序输出的结果是 >


//练习6：
//多组输入，输入整数，输出对应行数的叉型* 形图，比如输入5
//*   * 输出为左图
// * *
//  *
// * *
//*   *

//int main()
//{
//    int n = 0;//
//    while (scanf("%d", &n) == 1)//题目要求的多组输入的意思是
//        //在输入第一个数字，比如5和'\n'，得到了一个叉型图
//        //程序不应立即停止，应该再等待下一个数字和'\n'，比如10
//        //再在程序运行界面重新输入一个叉型图
//    {
//        int i = 0;
//        int j = 0;//
//        for (i = 0; i < n; i++)
//        {
//            for (j = 0; j < n; j++)
//            {
//                if (i == j)
//                {
//                    printf("*");//
//                }
//                else if ((i + j) == (n - 1))
//                {
//                    printf("*");//
//                }
//                else
//                {
//                    printf(" ");//
//                }
//            }
//            printf("\n");//
//        }
//    }
//    return 0;//
//}

//练习7：
//输入要求：
//多组输入，一行有两个整数，用空格分隔，分别表示年份和月份
//输出要求：
//针对每组输入，输出为一行，一个整数，表示这一年这个月有多少天

//int is_leap_year(int y)
//{
//    return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));
//}
//
//int main()
//{
//    int y = 0;//
//    int m = 0;//
//    int d = 0;//
//    int days[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//
//    while (scanf("%d %d", &y, &m) == 2)
//    {
//        d = days[m];//
//        if ((is_leap_year(y) == 1) && (m == 2))
//        {
//            d++;//
//        }
//        printf("%d\n", d);//
//    }
//    return 0;//
//}

//练习8：
//输入要求：
//有多组输入数据，每一行输入三个a，b，c(都介于0到100之间)，
//作为三角形的三个边，用空格分隔
//输出要求：
//针对每组输入数据，输出占一行，如果不能构成三角形，输出不是三角形，如果能构成三角形，
//针对等边的输出 等边三角形，针对等腰的输出 等腰三角形，其他输出 普通三角形

int main()
{
    int a = 0;//
    int b = 0;//
    int c = 0;//
    while (scanf("%d %d %d", &a, &b, &c) == 3)
    {
        if ((a + b > c) && (a + c > b) && (b + c > a))
        {
            if ((a == b) && (b == c))
            {
                printf("Equilateral triangle\n");//
            }
            else if ((a == b) || (a == c) || (b == c))
            {
                printf("Isosceles triangle\n");//
            }
            else
            {
                printf("Ordinary triangle\n");//
            }
        }
        else
        {
            printf("Not a triangle\n");//
        }
    }
    return 0;//
}